﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Media.Media3D;
using Eniux.Windows.ThreeDEngine.Base.CameraControllers;

namespace Eniux.Windows.ThreeDEngine.Base
{
    /// <summary>
    /// 3D视窗接口
    /// </summary>
    public interface IEniuxViewport3D
    {
        #region 公共属性

        /// <summary>
        /// 获取当前相机
        /// </summary>
        ProjectionCamera Camera { get; }

        /// <summary>
        /// 获取当前相机控制器
        /// </summary>
        CameraController CameraController { get; }

        /// <summary>
        /// 获取当前3D视窗所有光源
        /// </summary>
        Model3DGroup Lights { get; }

        /// <summary>
        /// 获取当前当前3D视窗
        /// </summary>
        Viewport3D Viewport { get; }

        #endregion

        #region 公共方法

        /// <summary>
        /// 拷贝内容到剪贴板
        /// </summary>
        void Copy();

        /// <summary>
        /// 以Xaml格式拷贝内容到剪贴板
        /// </summary>
        void CopyXaml();

        /// <summary>
        /// 以指定文件名导出内容
        /// </summary>
        /// <param name="fileName">文件名</param>
        void Export(string fileName);

        /// <summary>
        /// 以平滑的动画方式放大、缩小
        /// </summary>
        /// <param name="animationTime"></param>
        void ZoomExtents(double animationTime);

        #endregion
    }
}
